Bare Metal(일반 하드웨어) - Virtualization(가상화) - 컨테이너 기반 가상화 플랫폼 사용(도커 등)
즉, 소프트웨어 확장성과 배포가 용이하게 운영하기 위해서 사용
리눅스에서만 돌려야 하는 이유
컨테이너 엔진은 리눅스 커널 기능을 기반으로 만들어졌다. 즉, 리눅스 커널 기능을 사용해야 함
도커가 아래의 리눅스 커널에 있는 기능을 사용
chroot : 독립된 공간 형성
namespace : isolate(격리) 기능 지원
cgroup : 필요한만큼 HW 지원
윈도우나 맥 OS들은 리눅스 커널이 없으므로, 그 위에 VM(가상환경 - 리눅스)를 올려서 사용한다.
이때 필요한 기능은 Hypervisor 기능이 활성화 되어 있어야 한다.
Hypervisor : 하나의 OS 위에 여러 개의 OS들이 올라가 동시에 실행할 수 있도록 하는 논리적 플랫폼을 뜻한다.
일반 프로그램 VS 컨테이너
일반 프로그램은 애플리케이션을 돌릴 때 필요한 구성 하나하나를 일일이 구성해야 한다.
그러나 컨테이너는 애플리케이션을 돌릴 때 필요한 구성을 이미지화 해 한번 저장시켜두면 다른 개발환경에서 쉽게 구축이 가능하다
그래서 컨테이너를 쓰는 이유
환경 구성 다른 환경에서 구축하기 쉽다.
확장성이 용이하다. (스케일 인/아웃)
MSA, DevOps에 적합하다.
ex) 많은 트래픽이 발생해 애플리케이션을 확장시켜야 할 때, 기존에는 VM 위에 애플리케이션을 하나 더 올리는 방식을 택했다. 하지만 이는 OS의 자원이 같이 올라가기 때문에 불필요한 자원을 소모해야 했었다. 이에 반해 컨테이너 방식은 OS를 포함하지 않고, 애플리케이션만 겪리된 환경을 구성해 분산화에 용이하다.